Memoization for Optimizing Recursion
Applicable to problems with overlapping subproblems (a hallmark of dynamic programming)
Trades additional space for significant time savings
Contrasts with tabulation (bottom-up DP), which avoids recursion by building results iteratively
Only effective when subproblems repeat; not useful for problems like Merge Sort where subproblems don't overlap